import router from './router'
import store from './store'

import { Message } from 'element-ui'
import { removeToken } from './utils/auth'

// 声明白名单不需要登录就可以访问的页面
const whiteList = ['/login', '/404']

router.beforeEach(async(to, from, next) => {
  // determine whether the user has logged in
  const hasToken = store.getters.token

  // 判断有没有token
  if (hasToken) {
    // 仓库不为空并且所在的路由为login
    if (store.getters.isLogin && to.path === '/login') {
      return next({ path: '/' })
    }
    // 仓库不为空
    if (store.getters.isLogin) {
      return next()
    }
    try {
      await store.dispatch('user/getUserInfo')
      await store.dispatch('permission/filterRoutes')
      to.path === '/login' ? next('/') : next(to)
    } catch (error) {
      console.log(error)
      // token有问题删除token
      store.dispatch('user/loginOut')
      removeToken()
      // 提示用户从新登陆
      Message.error('请重新登录')
      to.path === '/login' ? next() : next('/login')
    }
    // 有token判断路由地址是不是login
    // if (to.path === '/login') {
    // 是login的话就跳转去首页
    // return next({ path: '/' })
    // }
    // 不是login
    // return next()
  }
  // 没有token
  // includes是判断数组中不存不存在某个数
  if (whiteList.includes(to.path)) {
    // 存在就可以直接访问
    return next()
  } else {
    // 不存在就去登录页
    next(`/login`)
  }
})
